package com.ruoyi.student.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 学生注册对象 student_registration
 * 
 * @author ruoyi-mate
 * @date 2025-08-11
 */
public class StudentRegistration extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自增主键 */
    private String id;

    /** 学生学号（唯一），关联sys_user的username */
    @Excel(name = "学生学号", readConverterExp = "唯=一")
    private String studentId;

    /** 学生姓名，关联sys_user的nick_name */
    @Excel(name = "学生姓名，关联sys_user的nick_name")
    private String studentName;

    /** 学院ID，关联学院表主键 */
    @Excel(name = "学院ID，关联学院表主键")
    private String collegeId;

    /** 学院名称（冗余字段，优化查询） */
    @Excel(name = "学院名称", readConverterExp = "冗=余字段，优化查询")
    private String collegeName;

    /** 专业ID，关联专业表主键 */
    @Excel(name = "专业ID，关联专业表主键")
    private String majorId;

    /** 专业名称（冗余字段，优化查询） */
    @Excel(name = "专业名称", readConverterExp = "冗=余字段，优化查询")
    private String majorName;

    /** 注册学期（如2024-2025-1） */
    @Excel(name = "注册学期", readConverterExp = "如=2024-2025-1")
    private String registrationSemester;

    /** 注册时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "注册时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date registrationTime;

    /** 注册IP地址 */
    @Excel(name = "注册IP地址")
    private String registrationIp;

    /** 注册浏览器信息 */
    @Excel(name = "注册浏览器信息")
    private String browserInfo;

    /** 操作系统信息 */
    @Excel(name = "操作系统信息")
    private String osInfo;

    /** 注册状态（0-待审核 1-已通过 2-已驳回） */
    @Excel(name = "注册状态", readConverterExp = "0=-待审核,1=-已通过,2=-已驳回")
    private Integer registrationStatus;

    /** 审核人ID，关联sys_user的user_id */
    @Excel(name = "审核人ID，关联sys_user的user_id")
    private String auditUserId;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date auditTime;

    /** 审核备注（驳回原因等） */
    @Excel(name = "审核备注", readConverterExp = "驳=回原因等")
    private String auditRemark;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }

    public void setStudentId(String studentId) 
    {
        this.studentId = studentId;
    }

    public String getStudentId() 
    {
        return studentId;
    }

    public void setStudentName(String studentName) 
    {
        this.studentName = studentName;
    }

    public String getStudentName() 
    {
        return studentName;
    }

    public void setCollegeId(String collegeId)
    {
        this.collegeId = collegeId;
    }

    public String getCollegeId()
    {
        return collegeId;
    }

    public void setCollegeName(String collegeName) 
    {
        this.collegeName = collegeName;
    }

    public String getCollegeName() 
    {
        return collegeName;
    }

    public void setMajorId(String majorId)
    {
        this.majorId = majorId;
    }

    public String getMajorId()
    {
        return majorId;
    }

    public void setMajorName(String majorName) 
    {
        this.majorName = majorName;
    }

    public String getMajorName() 
    {
        return majorName;
    }

    public void setRegistrationSemester(String registrationSemester) 
    {
        this.registrationSemester = registrationSemester;
    }

    public String getRegistrationSemester() 
    {
        return registrationSemester;
    }

    public void setRegistrationTime(Date registrationTime) 
    {
        this.registrationTime = registrationTime;
    }

    public Date getRegistrationTime() 
    {
        return registrationTime;
    }

    public void setRegistrationIp(String registrationIp) 
    {
        this.registrationIp = registrationIp;
    }

    public String getRegistrationIp() 
    {
        return registrationIp;
    }

    public void setBrowserInfo(String browserInfo) 
    {
        this.browserInfo = browserInfo;
    }

    public String getBrowserInfo() 
    {
        return browserInfo;
    }

    public void setOsInfo(String osInfo) 
    {
        this.osInfo = osInfo;
    }

    public String getOsInfo() 
    {
        return osInfo;
    }

    public void setRegistrationStatus(Integer registrationStatus) 
    {
        this.registrationStatus = registrationStatus;
    }

    public Integer getRegistrationStatus() 
    {
        return registrationStatus;
    }

    public void setAuditUserId(String auditUserId)
    {
        this.auditUserId = auditUserId;
    }

    public String getAuditUserId()
    {
        return auditUserId;
    }

    public void setAuditTime(Date auditTime) 
    {
        this.auditTime = auditTime;
    }

    public Date getAuditTime() 
    {
        return auditTime;
    }

    public void setAuditRemark(String auditRemark) 
    {
        this.auditRemark = auditRemark;
    }

    public String getAuditRemark() 
    {
        return auditRemark;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("studentId", getStudentId())
            .append("studentName", getStudentName())
            .append("collegeId", getCollegeId())
            .append("collegeName", getCollegeName())
            .append("majorId", getMajorId())
            .append("majorName", getMajorName())
            .append("registrationSemester", getRegistrationSemester())
            .append("registrationTime", getRegistrationTime())
            .append("registrationIp", getRegistrationIp())
            .append("browserInfo", getBrowserInfo())
            .append("osInfo", getOsInfo())
            .append("registrationStatus", getRegistrationStatus())
            .append("auditUserId", getAuditUserId())
            .append("auditTime", getAuditTime())
            .append("auditRemark", getAuditRemark())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
